---
title: Application configuration settings
summary: Configuration keys, retrieval methods, and runtime dependencies for the LegalMaintenance application.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-25
---

# Application configuration settings

LegalMaintenance's configuration surface is small and mostly delegated to the BOF framework: across the entry-point application and its consumed libraries, 11 unique Environment API keys, 1 `Web.config` AppSettings key, one Oracle ODP.NET provider registration, one SQL Server BDS connection built from three Environment API keys, and two custom configuration sections (`infragistics.web`, `oracle.manageddataaccess.client`) were found. No library or the application itself stores secrets, connection strings, or credentials directly — all are resolved by the SAIF BOF framework behind logical keys/portal names.

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `EnvironmentService.GetConfigSetting(key)` / `AppGlobal.EnvironmentService.GetConfigSetting(key)` | `EnvironmentService` / `AppGlobal` | `SAIF.Framework.Security` (backed by `SAIF.BOF.Framework.Security.EnvironmentApi`) | The dominant pattern across the application and its libraries — a static/ambient accessor resolves a named plain-text setting. Used in [LegalMaintenance](../libraries/saif-application/configuration.md), [SAIF.Application.Claim](../libraries/saif-application-claim/configuration.md), [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/configuration.md), [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/configuration.md), and [SAIF.Services.Printing](../libraries/saif-services-printing/configuration.md). |
| `WindowsEnvironmentService().GetConfigSetting(key)` | `WindowsEnvironmentService` | `SAIF.Framework.Security` | Instantiated inline (rather than via `AppGlobal`) in `LegalMaintenance` to resolve the claim-data API base URL. See [LegalMaintenance configuration](../libraries/saif-application/configuration.md). |
| `AppGlobal.EnvironmentService.GetApplicationEnvironment()` | `EnvironmentService` | `SAIF.Framework.Security` | Environment classification query (not a keyed lookup) compared against `ApplicationEnvironment.Prod` to switch test/production behavior. Used in [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/configuration.md), [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/configuration.md), and [SAIF.Services.Appworx](../libraries/saif-services-appworx/configuration.md). |
| `ConfigurationManager.AppSettings` / `Web.config` `<appSettings>` | — | `System.Configuration` | Only one key found across the entire application (`ApplicationHost`, declared in `LegalMaintenance/Web.config`); no direct `ConfigurationManager.AppSettings[...]` call site was found in any library's `.vb` source. |
| Injected `IDataPortalInfo` | `IDataPortalInfo` | SAIF BOF data portal | The dominant connection-configuration pattern — the caller supplies a pre-built Oracle or SQL Server data portal rather than the library reading connection configuration itself. Used by [SAIF.Application.Claim](../libraries/saif-application-claim/configuration.md), [SAIF.Application.Claim.Legal](../libraries/saif-application-claim-legal/configuration.md), and [SAIF.Business.View.Policy](../libraries/saif-business-view-policy/configuration.md). |
| Config-section provider registration | `oracle.manageddataaccess.client` section handler | `Oracle.ManagedDataAccess` | Declared (usually empty) in every project's `app.config`/`Web.config` to register the ODP.NET managed provider factory; not read directly by any library's code. |

## Environment API settings catalog

Settings retrieved via `EnvironmentService` / `WindowsEnvironmentService` (centralized environment configuration service), consolidated across the application and its libraries.

| Setting key | Method | Purpose | Owning library | Documentation |
| --- | --- | --- | --- | --- |
| `EnvironmentConfigKeys.OracleDatabase` | `GetConfigSetting` | Logical/target Oracle database environment identifier, exposed as `clsLegalMaintenanceModel.DatabaseEnvironment` | LegalMaintenance (entry point) | [Configuration](../libraries/saif-application/configuration.md) |
| `cc.ccclaimdataapiurl` | `GetConfigSetting` | Base URL for the claim data API, used to construct an `ApiClient` registered on the active manager's DPI | LegalMaintenance (entry point) | [Configuration](../libraries/saif-application/configuration.md) |
| `imagingapiurl` | `GetConfigSetting` | Base URL of the SAIF Imaging API, used to construct `ClaimAppManager.ClaimImageApiClient` | SAIF.Application.Claim | [Configuration](../libraries/saif-application-claim/configuration.md) |
| `xpressionsoutputdocumentspath` | `GetConfigSetting` | Filesystem/UNC path where Xpressions-generated legal letter output documents are written/read | SAIF.Business.Claim.Legal | [Configuration](../libraries/saif-business-claim-legal/configuration.md) |
| `Legal.LettersManagingAttorneyUserId` | `GetConfigSetting` | User ID of the managing attorney stamped onto generated legal letters/letter requests | SAIF.Business.Claim.Legal | [Configuration](../libraries/saif-business-claim-legal/configuration.md) |
| `BDS_USER` | `GetConfigSetting` | SQL Server BDS database user identifier passed to `clsSQLDataLayer` | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| `bdsDatabase` | `GetConfigSetting` | SQL Server host/instance name for the BDS connection (misleadingly-named key)* | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| `BDS_DATABASENAME` | `GetConfigSetting` | SQL Server catalog name for the BDS connection | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| `documentGeneratorServiceUrl` | `GetConfigSetting` | xPression `clsGenerate` ASMX endpoint URL | SAIF.Services.Printing | [Configuration](../libraries/saif-services-printing/configuration.md) |
| `documentMSMQPath` | `GetConfigSetting` | MSMQ queue path used to construct a transactional `MessageQueue` for deferred/composite print distribution | SAIF.Services.Printing | [Configuration](../libraries/saif-services-printing/configuration.md) |
| `idmFilePath` | `GetConfigSetting` | Imaging (IDM) drop location, re-read live on every access | SAIF.Services.Printing | [Configuration](../libraries/saif-services-printing/configuration.md) |
| `sqlReportingServiceUrl` | `GetConfigSetting` | SSRS `ReportExecution2005` ASMX endpoint URL | SAIF.Services.Printing | [Configuration](../libraries/saif-services-printing/configuration.md) |

**12 unique Environment API keys** across the application. In addition, `IsProduction` and `IsWeb` are read as environment API **flags** (not keyed settings) by `SAIF.Services.Printing` to select an environment label and a security platform, respectively, and `GetApplicationEnvironment()` is called (with no key) by `SAIF.Application.Claim.Legal`, `SAIF.Business.Claim.Legal`, and `SAIF.Services.Appworx` purely to branch on production vs. non-production.

## AppSettings catalog

| Setting key | Default value | Purpose | Owning project | Documentation |
| --- | --- | --- | --- | --- |
| `ApplicationHost` | `np17` | Host/environment identifier declared in `Web.config`; no direct `ConfigurationManager.AppSettings["ApplicationHost"]` call site was found anywhere in this repository's `.vb` code, so the consumer is framework-internal or read via reflection/binding infrastructure.** | LegalMaintenance (entry point) | [Configuration](../libraries/saif-application/configuration.md) |

**1 AppSettings key application-wide.** No other library declares an `<appSettings>` section or reads `ConfigurationManager.AppSettings`.

## Database connection catalog

| Connection name | Provider | Retrieval method | Purpose | Owning library | Documentation |
| --- | --- | --- | --- | --- | --- |
| Oracle ODP.NET provider registration | Oracle — ODP.NET Managed Driver (`Oracle.ManagedDataAccess`, v4.122.21.1) | `<system.data><DbProviderFactories>` + `<oracle.manageddataaccess.client>` config section | Registers the Oracle managed provider factory at the process level so dependency libraries' `CreateOraclePortal` calls can open connections | LegalMaintenance (entry point) | [Configuration](../libraries/saif-application/configuration.md) |
| Claim data portal (`ClaimDPI`) | Oracle — ODP.NET Managed Driver | `DataLayer.CreateOraclePortal(ClaimAppConstants.DPIClaimKey)`, DB user pinned to `"CLM"` | All claim data access via `ClaimAppManager.DPI` | SAIF.Application.Claim | [Configuration](../libraries/saif-application-claim/configuration.md) |
| Caller-supplied LegalNet database | Oracle Managed Data Access | `inDatabase` constructor argument + `DataLayer.DBUser = "LGN"` | All direct SQL, package calls, and business-object persistence for LegalNet workflows | SAIF.Application.Claim.Legal | [Configuration](../libraries/saif-application-claim-legal/configuration.md) |
| Oracle connection (portal-resolved, no local connection string) | Oracle.ManagedDataAccess.Client (ODP.NET Managed Driver) | Resolved by the SAIF BOF data portal (`IDataPortalInfo`) at runtime | Oracle database access for all criteria/collection loads | SAIF.Business.Claim.Legal | [Configuration](../libraries/saif-business-claim-legal/configuration.md) |
| Primary Oracle policy-data connection (`DPI`) | Oracle / ODP.NET* | Injected `IDataPortalInfo` | Main policy, association, audit, address, and trading-as data path | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| SQL Server BDS security connection (`DPISql`) | Microsoft SQL Server | Constructed from `BDS_USER` + `bdsDatabase` + `BDS_DATABASENAME` via `clsSQLDataLayer` | Group, loss-control, and agent authorization plus BDS policy-list lookups | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| Team-assignment email SQL Server connection | Microsoft SQL Server* | Injected `IDataPortalInfo` | `cp_external_client_lookup` for external team-member email resolution | SAIF.Business.View.Policy | [Configuration](../libraries/saif-business-view-policy/configuration.md) |
| Caller-supplied data portal (default) + hard-coded `PRADT`@`WCISPROD`/`WCISDEV1` override | Oracle (ODP.NET Managed Driver) | Caller-injected `IDataPortalInfo`, or hard-coded literal schema/database when an inert override flag is set | Appworx batch job submission | SAIF.Services.Appworx | [Configuration](../libraries/saif-services-appworx/configuration.md) |

No library or the application itself declares a literal connection string, TNS alias, host, or credential in any `Web.config`/`App.config` — the entry point's `<connectionStrings />` element is empty, and all connections are resolved by the BOF framework from logical portal keys or Environment API settings.

## Custom configuration sections

Custom XML configuration sections registered in `Web.config`/`App.config`.

| Section name | Handler type | Purpose | Owning project |
| --- | --- | --- | --- |
| `infragistics.web` | `System.Configuration.SingleTagSectionHandler` | Configures the Infragistics WebUI style set (`styleSetName="SAIFDefault"`, `styleSetPath="/resources/ig_res"`) used by the application's Infragistics 11.1/10.3 controls | LegalMaintenance (entry point) |
| `oracle.manageddataaccess.client` | `OracleInternal.Common.ODPMSectionHandler` (`Oracle.ManagedDataAccess`, v4.122.21.1) | Declares the ODP.NET managed configuration section; present in nearly every project's `app.config`/`Web.config` but contains no child elements in any of them | LegalMaintenance and every consumed library |

## Settings classes (ApplicationSettingsBase)

| Class | Property | Purpose | Owning library | Notes |
| --- | --- | --- | --- | --- |
| `SAIF.Services.Printing.My.MySettings` | `WebServiceUrl` (×2) | Design-time typed proxy defaults for the xPression and SSRS ASMX web references | SAIF.Services.Printing | Both values are unconditionally overwritten at runtime by the corresponding Environment API setting (`documentGeneratorServiceUrl`, `sqlReportingServiceUrl`); the designer-generated defaults are never actually used at runtime.* |
| `SAIF.Application.Claim.Legal.My.MySettings` | — | Auto-generated Settings Designer scaffold | SAIF.Application.Claim.Legal | Contains no settings properties — effectively unused. |

Two additional legacy `ClientSettingsSection` declarations (`applicationSettings/SAIF.MySettings`, `applicationSettings/SAIF.My.MySettings`) exist in `SAIF.Services.Printing/app.config` with no corresponding designer class — vestigial/dead declarations carried over from a predecessor assembly.*

## Secure settings

**None found application-wide.** No library or the entry-point application calls `GetSecureConfigSetting`, computes a hash via `SystemHashUtil`, or stores a credential, password, API key, or token literal in source or config files. Credentials for external services (xPression, SSRS, Oracle, SQL Server, Active Directory) are resolved by the BOF framework or carried by the ambient Windows/Web identity, not by application-level configuration.

## Transitive configuration (from dependencies)

Configuration required by BOF framework packages consumed transitively (`SAIF.BOF.Framework.Security.EnvironmentApi`, `SAIF.BOF.Framework.Connection`, `SAIF.BOF.Framework.Security`) — key names are not visible from this repository.

| Setting key | Consumed by (framework mechanism) | Purpose |
| --- | --- | --- |
| Environment API service bootstrap configuration | `EnvironmentService` / `WindowsEnvironmentService` initialization | Bootstraps the environment service itself before any `GetConfigSetting` call can succeed** |
| Oracle connection string / TNS resolution (per logical portal key: `ClaimDPI`, LegalNet database, policy DPI, Appworx aliases) | `CreateOraclePortal` / injected `IDataPortalInfo` | Resolves the actual Oracle connection behind each logical portal key used across the application** |
| AD SecurityService endpoint | `clsSecurityPrincipal.IsAuthorized` / `UserAccess.HasAccess` | Backs all AD resource membership checks used across every screen and manager in the application** |

## Environment variance assessment

| Setting key | Varies by environment | Notes |
| --- | --- | --- |
| `EnvironmentConfigKeys.OracleDatabase` | Yes | Explicitly an environment identifier by design. |
| `cc.ccclaimdataapiurl` | Yes | Claim data API base URL differs per environment (DEV/TEST/UAT/PROD). |
| `imagingapiurl` | Yes | Imaging API base URL varies by environment. |
| `xpressionsoutputdocumentspath` | Likely* | Output path plausibly differs by environment (e.g., shared drive per environment), not directly confirmed. |
| `Legal.LettersManagingAttorneyUserId` | No* | A business/organizational value (managing attorney user ID), not an infrastructure endpoint — unlikely to vary by environment, though not directly confirmed. |
| `BDS_USER` / `bdsDatabase` / `BDS_DATABASENAME` | Yes | SQL Server BDS host/catalog/user plausibly differ per environment. |
| `documentGeneratorServiceUrl` / `sqlReportingServiceUrl` | Yes | ASMX service endpoints differ by environment. |
| `documentMSMQPath` / `idmFilePath` | Yes | Filesystem/queue paths plausibly differ by environment. |
| `ApplicationHost` | Yes | Environment-specific host identifier (`np17` observed in this repository's `Web.config`). |

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Related documentation
- [Application index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Data model](data-model.md)
- [Tech debt](tech-debt.md)

## Sources
- `LegalMaintenance/Classes/clsLegalMaintenanceModel.vb`
- `LegalMaintenance/Web.config`
- `LegalMaintenance/App.config`
- [SAIF.Application configuration](../libraries/saif-application/configuration.md)
- [SAIF.Application.Claim configuration](../libraries/saif-application-claim/configuration.md)
- [SAIF.Application.Claim.Legal configuration](../libraries/saif-application-claim-legal/configuration.md)
- [SAIF.Business.Claim.Legal configuration](../libraries/saif-business-claim-legal/configuration.md)
- [SAIF.Business.View.Policy configuration](../libraries/saif-business-view-policy/configuration.md)
- [SAIF.Services.Appworx configuration](../libraries/saif-services-appworx/configuration.md)
- [SAIF.Services.Printing configuration](../libraries/saif-services-printing/configuration.md)
